home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Installer SDK Cornucopia 1.0.2 / DeveloperInterfaces / CIncludes / InstallerScript.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-10  |  12.1 KB  |  433 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        InstallerScript.h
  3.  
  4.      Contains:    xxx put contents here xxx
  5.  
  6.      Version:    Technology:    
  7.                  Package:    4.1a2
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __INSTALLERSCRIPT__
  21. #define __INSTALLERSCRIPT__
  22.  
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. #if PRAGMA_ALIGN_SUPPORTED
  29. #pragma options align=mac68k
  30. #endif
  31.  
  32. #if PRAGMA_IMPORT_SUPPORTED
  33. #pragma import on
  34. #endif
  35.  
  36.  
  37. #ifndef __FILES__
  38. #include <Files.h>
  39. #endif
  40. /*    #include <Types.h>                                            */
  41. /*        #include <ConditionalMacros.h>                            */
  42. /*    #include <MixedMode.h>                                        */
  43. /*    #include <OSUtils.h>                                        */
  44. /*        #include <Memory.h>                                        */
  45. /*        #include <Patches.h>                                    */
  46. /*            #include <Kernel.h>                                    */
  47. /*                #include <Errors.h>                                */
  48. /*                #include <MachineExceptions.h>                    */
  49. /*                #include <Timing.h>                                */
  50. /*            #include <OrderedItems.h>                            */
  51. /*    #include <Finder.h>                                            */
  52.  
  53. #ifndef __MEMORY__
  54. #include <Memory.h>
  55. #endif
  56.  
  57. #ifndef __MIXEDMODE__
  58. #include <MixedMode.h>
  59. #endif
  60.  
  61. #ifndef __TYPES__
  62. #include <Types.h>
  63. #endif
  64. #define kMaxNumOfFunctionParams 12
  65. struct CallBackPBRec {
  66.     long                            fSelector;
  67.     long                            fResult;
  68.     long                            fParam[12];
  69. };
  70. typedef struct CallBackPBRec CallBackPBRec, *CallBackPBPtr;
  71.  
  72. typedef long (*InstallerCallBackProcPtr)(CallBackPBPtr);
  73.  
  74. #if GENERATINGCFM
  75. typedef UniversalProcPtr InstallerCallBackUPP;
  76. #else
  77. typedef InstallerCallBackProcPtr InstallerCallBackUPP;
  78. #endif
  79.  
  80. enum {
  81.     uppInstallerCallBackProcInfo = kCStackBased
  82.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  83.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CallBackPBPtr)))
  84. };
  85.  
  86. #if GENERATINGCFM
  87. #define NewInstallerCallBackProc(userRoutine)        \
  88.         (InstallerCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppInstallerCallBackProcInfo, GetCurrentArchitecture())
  89. #else
  90. #define NewInstallerCallBackProc(userRoutine)        \
  91.         ((InstallerCallBackUPP) (userRoutine))
  92. #endif
  93.  
  94. #if GENERATINGCFM
  95. #define CallInstallerCallBackProc(userRoutine, parameter0)        \
  96.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppInstallerCallBackProcInfo, (parameter0))
  97. #else
  98. #define CallInstallerCallBackProc(userRoutine, parameter0)        \
  99.         (*(userRoutine))((parameter0))
  100. #endif
  101.  
  102. /*****************************************************************************************************/
  103. /**/
  104. /*                                        Rule Function*/
  105. /**/
  106. /**/
  107. /*    Code Resource Calling Interface:*/
  108. /**/
  109. /*        long YourRuleFunction( RuleFunctionPBPtr );*/
  110. /**/
  111. /*****************************************************************************************************/
  112. #define kTRUERuleFunctionResult 1
  113. #define kFALSERuleFunctionResult 0
  114. struct RuleFunctionPBRec {
  115.     InstallerCallBackUPP            fCallBackProcPtr;
  116.     short                            fTargetVRefNum;
  117.     long                            fTargetFolderDirID;
  118.     short                            fSystemVRefNum;
  119.     long                            fSystemBlessedDirID;
  120.     long                            fRefCon;
  121. };
  122. typedef struct RuleFunctionPBRec RuleFunctionPBRec, *RuleFunctionPBPtr;
  123.  
  124. /*****************************************************************************************************/
  125. /**/
  126. /*                                        Action Atom Function*/
  127. /**/
  128. /**/
  129. /*    Code Resource Calling Interface:*/
  130. /**/
  131. /*        long YourActionAtomFunction( ActionAtom2PBPtr );*/
  132. /**/
  133. /*****************************************************************************************************/
  134.  
  135. enum {
  136.     before,
  137.     after,
  138.     cleanUpCancel
  139. };
  140.  
  141. typedef SInt8 InstallationStage;
  142.  
  143.  
  144. enum {
  145.     kActionAtomResultFatalError    = -1,
  146.     kActionAtomResultContinue    = 0,
  147.     kActionAtomResultCancel        = 1
  148. };
  149.  
  150. typedef long ActionAtomResult;
  151.  
  152. struct ActionAtom2PBRec {
  153.     InstallationStage                fMessageID;
  154.     SInt8                            padByte;
  155.     Handle                            fStaticDataHdl;
  156.     InstallerCallBackUPP            fCallBackProcPtr;
  157.     short                            fTargetVRefNum;
  158.     long                            fTargetFolderDirID;
  159.     short                            fSystemVRefNum;
  160.     long                            fSystemBlessedDirID;
  161.     long                            fRefCon;
  162.     Boolean                            fDoingInstall;
  163.     Boolean                            fDidLiveUpdate;
  164.     long                            fInstallerTempDirID;
  165. };
  166. typedef struct ActionAtom2PBRec ActionAtom2PBRec, *ActionAtom2PBPtr;
  167.  
  168. /*****************************************************************************************************/
  169. /**/
  170. /*                                        Version Compare Function*/
  171. /**/
  172. /**/
  173. /*    Code Resource Calling Interface:*/
  174. /**/
  175. /*        long YourComputeVersionFunctionSetupFunction( ComputeVersionPBPtr );*/
  176. /**/
  177. /*    Return the version in BCD format.  For example:  ver 2.0.1 final release is 0x02018000*/
  178. /**/
  179. /*****************************************************************************************************/
  180. struct ComputeVersionPB {
  181.     InstallerCallBackUPP            fCallBackProcPtr;
  182. };
  183. typedef struct ComputeVersionPB ComputeVersionPB, *ComputeVersionPBPtr;
  184.  
  185. /*****************************************************************************************************/
  186. /**/
  187. /*                                        Target Search Function*/
  188. /**/
  189. /**/
  190. /*    Code Resource Calling Interface:*/
  191. /**/
  192. /*        SearchResult YourTargetSearchFunction( SearchProcedurePBPtr );*/
  193. /**/
  194. /*****************************************************************************************************/
  195.  
  196. enum {
  197.     kFatalSearchError            = -1,
  198.     kSearchSuccessful            = 0,
  199.     kCancelSearchAndInstallation = 1
  200. };
  201.  
  202. typedef SInt8 SearchResult;
  203.  
  204. struct FoundFileRec {
  205.     short                            vRefNum;
  206.     long                            parID;
  207.     Str63                            name;
  208.     short                            fReferenceID;
  209. };
  210. typedef struct FoundFileRec FoundFileRec, *FoundFileArrayPtr, **FoundFileArrayHdl;
  211.  
  212. struct SearchProcedurePBRec {
  213.     InstallerCallBackUPP            fCallBackProcPtr;
  214.     short                            fTargetVRefNum;
  215.     long                            fTargetFolderDirID;
  216.     short                            fSystemVRefNum;
  217.     long                            fSystemBlessedDirID;
  218.     long                            fRefCon;
  219.     OSType                            fFileSpecType;
  220.     OSType                            fFileSpecCreator;
  221.     long                            fFileSpecCrDate;
  222.     Str255                            fFileSpecPath;
  223.     FoundFileArrayHdl                fFoundFilesArray;
  224. };
  225. typedef struct SearchProcedurePBRec SearchProcedurePBRec, *SearchProcedurePBPtr;
  226.  
  227. /*****************************************************************************************************/
  228. /**/
  229. /*                                        Setup Function*/
  230. /**/
  231. /**/
  232. /*    Code Resource Calling Interface:*/
  233. /**/
  234. /*        long YourSetupFunction( EnvironmentSetupPBPtr );*/
  235. /**/
  236. /*****************************************************************************************************/
  237. #define kContinueInstallerSetup 0
  238. #define kQuitInstallerNow -1
  239. struct EnvironmentSetupPB {
  240.     InstallerCallBackUPP            fCallBackProcPtr;
  241.     FSSpec                            fTargetFSSpec;
  242.     short                            fSystemVRefNum;
  243. };
  244. typedef struct EnvironmentSetupPB *EnvironmentSetupPBPtr;
  245.  
  246. /*****************************************************************************************************/
  247. /**/
  248. /*                                        Atom Extender Function*/
  249. /**/
  250. /**/
  251. /*    Code Resource Calling Interface:*/
  252. /**/
  253. /*        long YourAtomExtenderFunction( ExtenderPBPtr );*/
  254. /**/
  255. /*****************************************************************************************************/
  256.  
  257. enum {
  258.     kFileAtomDataFork,
  259.     kFileAtomRsrcFork,
  260.     kFileAtomRsrcForkFromDataFork,
  261.     kRsrcAtom,
  262.     kFontAtom,
  263.     kActionAtom
  264. };
  265.  
  266. typedef SInt8 DataType;
  267.  
  268.  
  269. enum {
  270.     kFatalError                    = -1,
  271.     kContinueAsNormal            = 0,
  272.     kCancelInstallation            = 1,
  273.     kCopiedData
  274. };
  275.  
  276. typedef SInt16 ExtenderResultCode;
  277.  
  278.  
  279. enum {
  280.     kInitialize,
  281.     kBeforePart,
  282.     kAfterPart,
  283.     kSuccess,
  284.     kCancel
  285. };
  286.  
  287. typedef SInt8 ExtenderMessageID;
  288.  
  289. struct EnvironsHeaderRec {
  290.     ExtenderMessageID                fMessageID;
  291.     SInt8                            pad1;
  292.     Handle                            fStaticDataHdl;
  293.     InstallerCallBackUPP            fCallBackProcPtr;
  294.     short                            fTargetVRefNum;
  295.     long                            fTargetFolderDirID;
  296.     short                            fSystemVRefNum;
  297.     long                            fSystemBlessedDirID;
  298.     long                            fRefCon;
  299.     DataType                        fDataType;
  300.     SInt8                            pad2;
  301. };
  302. typedef struct EnvironsHeaderRec EnvironsHeaderRec;
  303.  
  304. struct CopyHeaderRec {
  305.     FSSpec                            fSourceFile;
  306.     FSSpec                            fTargetFile;
  307.     long                            fTotalTargetSize;
  308.     long                            fTargetPosStart;
  309.     long                            fTargetPartSize;
  310.     long                            fSourcePartSize;
  311.     long                            fInstallerTempDirID;
  312. };
  313. typedef struct CopyHeaderRec CopyHeaderRec;
  314.  
  315. struct BasicCopyRec {
  316.     EnvironsHeaderRec                fEnvironmentHeader;
  317.     CopyHeaderRec                    fCopyPBHeader;
  318. };
  319. typedef struct BasicCopyRec BasicCopyRec;
  320.  
  321. struct RsrcCopyRec {
  322.     EnvironsHeaderRec                fEnvironmentHeader;
  323.     CopyHeaderRec                    fCopyPBHeader;
  324.     ResType                            fSourceRsrcType;
  325.     short                            fSourceRsrcID;
  326.     ResType                            fTargetRsrcType;
  327.     short                            fTargetRsrcID;
  328.     Str255                            fTargetRsrcName;
  329.     short                            fTargetRsrcAttrs;
  330. };
  331. typedef struct RsrcCopyRec RsrcCopyRec;
  332.  
  333. struct FontCopyRec {
  334.     EnvironsHeaderRec                fEnvironmentHeader;
  335.     CopyHeaderRec                    fCopyPBHeader;
  336.     ResType                            fSourceFontRsrcType;
  337.     short                            fSourceFontRsrcID;
  338.     ResType                            fTargetFontRsrcType;        /* FONT, NFNT, or sfnt*/
  339.     short                            fTargetFontRsrcID;
  340.     Str255                            fTargetFontRsrcName;
  341.     short                            fTargetFontRsrcAttrs;
  342.     Str255                            fFamilyName;
  343.     short                            fFamilyID;
  344.     short                            fFontSize;
  345.     short                            fFontStyle;
  346. };
  347. typedef struct FontCopyRec FontCopyRec;
  348.  
  349. union ExtenderPBRec {
  350.     BasicCopyRec                    fBasicPBRec;
  351.     BasicCopyRec                    fFileCopyPBRec;
  352.     RsrcCopyRec                        fRsrcCopyPBRec;
  353.     FontCopyRec                        fFontCopyPBRec;
  354. };
  355. typedef union ExtenderPBRec *ExtenderPBPtr;
  356.  
  357. /*****************************************************************************************************/
  358. /**/
  359. /*                                        Callback Glue Routines*/
  360. /**/
  361. /*****************************************************************************************************/
  362. /* Memory Related*/
  363. extern Handle INewHandle(InstallerCallBackUPP pCallBackProcPtr, unsigned long newHandleSize);
  364. extern void IDisposHandle(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  365. extern void IHLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  366. extern void IHUnLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  367. /* Atom Extender Related*/
  368. extern OSErr ReadSourceData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr);
  369. extern OSErr WriteTargetData(InstallerCallBackUPP pCallBackProcPtr, long count, Ptr storagePtr);
  370. extern OSErr ReadTargetData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr);
  371. extern OSErr SetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset);
  372. extern OSErr GetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset);
  373. extern OSErr GetTargetDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength);
  374. extern OSErr SetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset);
  375. extern OSErr GetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset);
  376. extern OSErr GetSourceDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength);
  377. /* Action Atom Related*/
  378. extern OSErr MakeFSSpecFromFileSpecID(InstallerCallBackUPP pCallBackProcPtr, short pFileSpecID, FSSpec *pFSSpecPtr, StringHandle *pExtraPathInfo);
  379. extern void SuspendWaitCursor(InstallerCallBackUPP pCallBackProcPtr);
  380. extern void ResumeWaitCursor(InstallerCallBackUPP pCallBackProcPtr);
  381. extern void IncrementStatusBar(InstallerCallBackUPP pCallBackProcPtr, short pIncrementAmount);
  382. extern Boolean IsUserInteractionAllowed(InstallerCallBackUPP pCallBackProcPtr);
  383. /*****************************************************************************************************/
  384. /**/
  385. /*                                        Obsolete Interfaces*/
  386. /**/
  387. /*****************************************************************************************************/
  388. /* Old Action Atom Parameter Block*/
  389. struct AAPBRec {
  390.     short                            targetVRefNum;
  391.     long                            blessedDirID;
  392.     long                            aaRefCon;
  393.     Boolean                            doingInstall;
  394.     InstallationStage                whichStage;
  395.     Boolean                            didLiveUpdate;
  396.     SInt8                            padByte;
  397.     long                            installerTempDirID;
  398. };
  399. typedef struct AAPBRec *AAPBRecPtr;
  400.  
  401. /* Action Handler Parameter Block*/
  402. struct ActionHandlerPB {
  403.     Handle                            fStaticDataHdl;
  404.     InstallerCallBackUPP            fCallBackProcPtr;
  405.     short                            fTargetVRefNum;
  406.     long                            fTargetFolderDirID;
  407.     short                            fSystemVRefNum;
  408.     long                            fSystemBlessedDirID;
  409.     short                            fActionClassID;
  410.     short                            fActionIdentifier;
  411.     void                            *fParam0;
  412.     void                            *fParam1;
  413.     void                            *fParam2;
  414.     void                            *fParam3;
  415.     void                            *fResultPtr;
  416. };
  417. typedef struct ActionHandlerPB *ActionHandlerPBPtr;
  418.  
  419.  
  420. #if PRAGMA_IMPORT_SUPPORTED
  421. #pragma import off
  422. #endif
  423.  
  424. #if PRAGMA_ALIGN_SUPPORTED
  425. #pragma options align=reset
  426. #endif
  427.  
  428. #ifdef __cplusplus
  429. }
  430. #endif
  431.  
  432. #endif /* __INSTALLERSCRIPT__ */
  433.